import dayjs from 'dayjs';

/**
 * 格式化日期
 * @param {String|Number|Date} date 日期
 * @param {String} format 格式
 * @returns {String}
 */
export const formatDate = (date, format = 'YYYY-MM-DD') => {
  if (!date) return '';
  return dayjs(date).format(format);
};

/**
 * 获取日期时间
 * @param {String|Number|Date} date 日期
 * @param {String} format 格式
 * @returns {String}
 */
export const formatDateTime = (date, format = 'YYYY-MM-DD HH:mm:ss') => {
  if (!date) return '';
  return dayjs(date).format(format);
};

/**
 * 计算两个日期之间的天数
 * @param {String|Number|Date} date1 日期1
 * @param {String|Number|Date} date2 日期2
 * @returns {Number}
 */
export const dayDiff = (date1, date2) => {
  return dayjs(date2).diff(dayjs(date1), 'day');
};

/**
 * 日期是否在指定范围内
 * @param {String|Number|Date} date 日期
 * @param {String|Number|Date} startDate 开始日期
 * @param {String|Number|Date} endDate 结束日期
 * @returns {Boolean}
 */
export const isDateInRange = (date, startDate, endDate) => {
  const target = dayjs(date);
  return target.isAfter(dayjs(startDate)) && target.isBefore(dayjs(endDate));
};

/**
 * 获取当前日期
 * @param {String} format 格式
 * @returns {String}
 */
export const getCurrentDate = (format = 'YYYY-MM-DD') => {
  return dayjs().format(format);
};